import { DataSource, DataSourceOptions } from 'typeorm';
import { config } from 'dotenv';
import { join } from 'path';

// 加载环境变量
const nodeEnv = process.env.NODE_ENV || 'development';
config({ path: `.env.${nodeEnv}` });

/**
 * 数据库配置（应用和迁移命令共用）
 */
export const dataSourceOptions: DataSourceOptions = {
  type: 'mysql',
  host: process.env.DB_HOST || 'localhost',
  port: parseInt(process.env.DB_PORT || '3306', 10),
  username: process.env.DB_USERNAME || 'root',
  password: process.env.DB_PASSWORD || '123456',
  database: process.env.DB_NAME || 'life_record',
  entities: [join(__dirname, '..', 'modules', '**', 'entities', '*{.ts,.js}')],
  migrations: [join(__dirname, '..', 'database', 'migrations', '*{.ts,.js}')],
  synchronize: nodeEnv !== 'production', // 非生产环境自动同步
  logging: nodeEnv === 'development', // 开发环境显示 SQL
  // logging: false, // 开发环境显示 SQL
  charset: 'utf8mb4',
  extra: {
    charset: 'utf8mb4_unicode_ci',
  },
};

// 导出 DataSource 实例供迁移命令使用
export default new DataSource(dataSourceOptions);
